home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Commodities / HotScreen / SelectScreen.mod < prev   
Text File  |  1996-09-26  |  2KB  |  105 lines

  1. MODULE SelectScreen;
  2.  
  3. IMPORT
  4.          e:Exec,
  5.          d:Dos,
  6.          I:Intuition,
  7.          str:Strings,
  8.          y:SYSTEM,
  9.          g:Graphics;
  10.  
  11. TYPE  MStr=ARRAY 90 OF CHAR;
  12.  
  13. VAR wnd:I.WindowPtr;
  14.     NList:ARRAY 50 OF MStr;
  15.     SList:ARRAY 50 OF I.ScreenPtr;
  16.     Sel,siz,LLen:INTEGER;
  17.     SelS:I.ScreenPtr;
  18.     TxtF:g.TextFontPtr;
  19.  
  20. CONST VersionString="$VER: HotScreen by HDS 1994   ";
  21. PROCEDURE GetList;
  22. VAR scr:I.ScreenPtr;
  23. BEGIN;
  24. LLen:=0;
  25. scr:=I.base.activeScreen;
  26. SelS:=scr;
  27. WHILE scr#NIL DO
  28.  INC(LLen);
  29.  NList[LLen]:="No Name !";
  30.  IF scr.title#NIL THEN
  31.  str.Cut(scr.title^,0,str.Length(scr.title^),NList[LLen]);
  32.  IF str.Length(NList[LLen])>30 THEN
  33.   str.Cut(scr.title^,0,30,NList[LLen]);
  34.  END;END;
  35.  SList[LLen]:=scr;
  36.  scr:=scr.nextScreen;Sel:=1;
  37. END;
  38. END GetList;
  39.  
  40. PROCEDURE InitWindow;
  41. VAR nwn:I.NewWindow;
  42.     h,w:INTEGER;
  43. BEGIN;
  44. nwn:=I.NewWindow(0,0,10,10,1,1,LONGSET{I.rawKey},
  45.       LONGSET{I.activate},NIL,NIL,NIL,NIL,NIL,0,0,400,400,I.customScreen);
  46. nwn.screen:=SList[1];
  47. siz:=nwn.screen.font.ySize+2;
  48. nwn.topEdge:=(SList[1].height-h)DIV 2;
  49. nwn.leftEdge:=(SList[1].width-28*siz) DIV 2;
  50. nwn.height:=10;nwn.width:=10;
  51. wnd:=I.OpenWindow(nwn);
  52. w:=g.TextLength(wnd.rPort,VersionString,32);
  53. siz:=wnd.iFont.ySize;
  54. h:=siz*LLen+siz;
  55. I.SizeWindow(wnd,w-10,h-10);
  56. d.Delay(10);
  57. END InitWindow;
  58.  
  59. PROCEDURE DrawList;
  60. VAR n:INTEGER;
  61. BEGIN;
  62. FOR n:=1 TO LLen DO
  63.  g.SetAPen(wnd.rPort,1);
  64.  g.SetBPen(wnd.rPort,0);
  65.  IF Sel=n THEN
  66.   g.SetAPen(wnd.rPort,0);
  67.   g.SetBPen(wnd.rPort,1);END;
  68.  g.Move(wnd.rPort,8,siz*n+2);
  69.  g.Text(wnd.rPort,NList[n],str.Length(NList[n]));
  70. END;
  71. END DrawList;
  72.  
  73.  
  74. PROCEDURE MainLoop;
  75. VAR im:I.IntuiMessagePtr;
  76.     ende:BOOLEAN;
  77. BEGIN;
  78. ende:=FALSE;
  79. REPEAT;
  80.  im:=e.GetMsg(wnd.userPort);
  81.  IF im#NIL THEN
  82.   IF im.code=77 THEN INC(Sel);IF Sel>LLen THEN Sel:=1;END;DrawList;END;
  83.   IF im.code=76 THEN DEC(Sel);IF Sel<1 THEN Sel:=LLen;END;DrawList;END;
  84.   IF im.code=69 THEN ende:=TRUE;END;
  85.   IF im.code=68 THEN ende:=TRUE;SelS:=SList[Sel];END;
  86.   e.ReplyMsg(im);
  87.  END;
  88. UNTIL ende;
  89. END MainLoop;
  90.  
  91. PROCEDURE DoIt*;
  92. BEGIN;
  93. GetList;
  94. InitWindow;
  95. DrawList;
  96. MainLoop;
  97. I.CloseWindow(wnd);
  98. I.ScreenToFront(SelS);
  99. END DoIt;
  100.  
  101. END SelectScreen.
  102.  
  103.  
  104.  
  105.